A cache is a computer component that transparently stores data such that future requests for that data can be provided faster. Data stored in a cache can include unique values that have been computed earlier or duplicates of original values that are stored elsewhere, such as in a far (or main) memory. If requested data is in the cache, this request can be handled by reading the cache, which is comparatively faster than reading far-memory. Otherwise the requested data is fetched from its original storage location. Thus, requests for data that is in the cache can typically be handled faster than for data that is not in the cache.
Although faster, storing and retrieving from cache creates challenges that slow down cache accesses. Cache operations, particularly set-associative cache operations, inherently break address locality such as to create additional open and close events (e.g., opening a new cache block or Way or closing a new cache block or Way). Additional open and close events add delays and increases cache response times, thus reversing, to some extent, the advantage of use of cache for fast access memory storage and reducing performance for some workloads when compared to a system that has only fast access memory storage and no far memory.